这道题的反推还是挺有意思的。
An Ac a day, keeps the doctor away!
i=1∑nj=1∑mij(i,j)μ2((i,j))
你得知道题目下表是从 0 开始编号,那么每个棋子只能控制与它距离不大于 1 的行。
所以只需压当前这一行的状态,令 dp(i,S) 表示前 i 行棋子,第 i 的摆放状态为 S 的方案。
那么有转移:
和 u 拥有共同的 k 级祖先的点数就是 u 的 k 级祖先的 k 级儿子的数量 −1.
再转换一下就是以 u 的 k 级祖先为根的子树内深度为 depu+k 的点的个数−1。
然后用 cntd 表示深度为 d 的点数,直接 dsu on tree 即可。
设原形坐标为 O,圆上一点坐标为 A
由提示得:
设 dp(i,j) 表示由 (i,j) 走到 (n,m) 的期望步数。
那么显然有转移:
这道题应该算是 CSP2019 树的重心 的前置知识了吧。可惜之前我并没有做过。
对于一棵以 u 为根的子树,它的重心只可能在点 u 或 以点 u 的重儿子为根的子树中。
那么类比 lca 倍增父亲,树的重心倍增重儿子。
n 个点 m 条边的无向无环图,其实就是一个森林。
题目要求最小化两个量:灯数和只被一边照亮的边数。
一个做法是定义两个 dp 数组,分别表示最小灯数和在灯数最小情况下的一边被照亮的最小边数。